package br.com.gae.view;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.jdo.PersistenceManagerFactoryUtils;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import br.com.gae.dao.ClienteDAO;
import br.com.gae.model.Cliente;
import br.com.gae.model.Perfil;

@Controller
public class LoginHome {

	private Cliente cliente = new Cliente();
	private Perfil perfil = new Perfil();
	
	@Autowired
	ClienteDAO dao;
	private List<Cliente> listaAll = new ArrayList<Cliente>();
	
	public LoginHome() {
		System.out.println("construído");
	}
	public Cliente getCliente() {
		return cliente;
	}
	
	public void limpar(){
		cliente = new Cliente();
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public void excluir(){
		try {
			dao.excluir(cliente);
		} catch (Exception e) {
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Erro ao excluir", e.getMessage()));
			e.printStackTrace();
		}
		
	}

	public List<Cliente> getListaClientes(){
//		List<Cliente> retorno = null;
		try {
			listaAll = dao.consultar();
		} catch (Exception e) {
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Erro ao excluir", e.getMessage()));
			e.printStackTrace();
		}
		dao.pmf.getPersistenceManagerProxy().detachCopyAll(listaAll);
		return listaAll;
	}
	
	public void salvar(){
		try {
			dao.salvar(cliente);
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Incluído com sucesso!"));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public Perfil getPerfil() {
		return perfil;
	}

	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}
	public void setDao(ClienteDAO dao) {
		this.dao = dao;
	}



	
}
